﻿using System;

namespace AdvancedGod.UserInterface
{
  /// <summary>
  /// Represents color scheme used by GodConsole
  /// </summary>
  public class ColorScheme
  {
    #region private consts

    /// <summary>
    /// Default foreground color, used for Botan printing
    /// </summary>
    private const ConsoleColor DefaultBotanForeground = ConsoleColor.Red;
    /// <summary>
    /// Default foreground color, used for Botan printing
    /// </summary>
    private const ConsoleColor DefaultBotanBackground = ConsoleColor.White;
    /// <summary>
    /// Default foreground color, used for Student printing
    /// </summary>
    private const ConsoleColor DefaultStudentForeground = ConsoleColor.Blue;
    /// <summary>
    /// Default foreground color, used for Student printing
    /// </summary>
    private const ConsoleColor DefaultStudentBackground = ConsoleColor.White;
    /// <summary>
    /// Default foreground color, used for Girl printing
    /// </summary>
    private const ConsoleColor DefaultGirlForeground = ConsoleColor.Red;
    /// <summary>
    /// Default foreground color, used for Girl printing
    /// </summary>
    private const ConsoleColor DefaultGirlBackground = ConsoleColor.Yellow;
    /// <summary>
    /// Default foreground color, used for PrettyGirl printing
    /// </summary>
    private const ConsoleColor DefaultPrettyGirlForeground = 
      ConsoleColor.Magenta;
    /// <summary>
    /// Default foreground color, used for PrettyGirl printing
    /// </summary>
    private const ConsoleColor DefaultPrettyGirlBackground = 
      ConsoleColor.Yellow;
    /// <summary>
    /// Default foreground color, used for SmartGirl printing
    /// </summary>
    private const ConsoleColor DefaultSmartGirlForeground = ConsoleColor.Black;
    /// <summary>
    /// Default foreground color, used for SmartGirl printing
    /// </summary>
    private const ConsoleColor DefaultSmartGirlBackground = 
      ConsoleColor.Yellow;
    /// <summary>
    /// Default foreground color, used for Book printing
    /// </summary>
    private const ConsoleColor DefaultBookForeground = ConsoleColor.DarkBlue;
    /// <summary>
    /// Default foreground color, used for Book printing
    /// </summary>
    private const ConsoleColor DefaultBookBackground = ConsoleColor.Gray;

    /// <summary>
    /// Default foreground color, used for Error printing
    /// </summary>
    private const ConsoleColor DefaultErrorForeground = ConsoleColor.White;
    /// <summary>
    /// Default backround color, used for Error printing
    /// </summary>
    private const ConsoleColor DefaultErrorBackground = ConsoleColor.DarkRed;

    /// <summary>
    /// Default foreground color, used for bad coupling result printing
    /// </summary>
    private const ConsoleColor DefaultBadResultForeground = ConsoleColor.Cyan;
    /// <summary>
    /// Default background color, used for bad coupling result printing
    /// </summary>
    private const ConsoleColor DefaultBadResultBackground = 
      ConsoleColor.DarkGreen;

    #endregion

    #region public properties

    /// <summary>
    /// Foreground color, used for Botan printng
    /// </summary>
    public ConsoleColor BotanForeground { get; protected set; }
    /// <summary>
    /// Background color, used for Botan printng
    /// </summary>
    public ConsoleColor BotanBackground { get; protected set; }
    /// <summary>
    /// Foreground color, used for Student printng
    /// </summary>
    public ConsoleColor StudentForeground { get; protected set; }
    /// <summary>
    /// Background color, used for Student printng
    /// </summary>
    public ConsoleColor StudentBackground { get; protected set; }
    /// <summary>
    /// Foreground color, used for Girl printng
    /// </summary>
    public ConsoleColor GirlForeground { get; protected set; }
    /// <summary>
    /// Background color, used for Girl printng
    /// </summary>
    public ConsoleColor GirlBackground { get; protected set; }
    /// <summary>
    /// Foreground color, used for PrettyGirl printng
    /// </summary>
    public ConsoleColor PrettyGirlForeground { get; protected set; }
    /// <summary>
    /// Background color, used for PrettyGirl printng
    /// </summary>
    public ConsoleColor PrettyGirlBackground { get; protected set; }
    /// <summary>
    /// Foreground color, used for SmartGirl printng
    /// </summary>
    public ConsoleColor SmartGirlForeground { get; protected set; }
    /// <summary>
    /// Background color, used for SmartGirl printng
    /// </summary>
    public ConsoleColor SmartGirlBackground { get; protected set; }
    /// <summary>
    /// Foreground color, used for Book printng
    /// </summary>
    public ConsoleColor BookForeground { get; protected set; }
    /// <summary>
    /// Background color, used for Book printng
    /// </summary>
    public ConsoleColor BookBackground { get; protected set; }

    /// <summary>
    /// Foreground color, used for errors printng
    /// </summary>
    public ConsoleColor ErrorForeground { get; protected set; }
    /// <summary>
    /// Background color, used for errors printng
    /// </summary>
    public ConsoleColor ErrorBackground { get; protected set; }

    /// <summary>
    /// Foreground color, used for bad result printng
    /// </summary>
    public ConsoleColor BadResultForeground { get; protected set; }
    /// <summary>
    /// Background color, used for bad result printng
    /// </summary>
    public ConsoleColor BadResultBackground { get; protected set; }


    #endregion 

    #region public methods
    /// <summary>
    /// Default constructor. 
    /// </summary>
    public ColorScheme()
    {
      BotanBackground = DefaultBotanBackground;
      BotanForeground = DefaultBotanForeground;

      StudentBackground = DefaultStudentBackground;
      StudentForeground = DefaultStudentForeground;

      GirlBackground = DefaultGirlBackground;
      GirlForeground = DefaultGirlForeground;

      PrettyGirlBackground = DefaultPrettyGirlBackground;
      PrettyGirlForeground = DefaultPrettyGirlForeground;

      SmartGirlBackground = DefaultSmartGirlBackground;
      SmartGirlForeground = DefaultSmartGirlForeground;

      BookBackground = DefaultBookBackground;
      BookForeground = DefaultBookForeground;

      ErrorForeground = DefaultErrorForeground;
      ErrorBackground = DefaultErrorBackground;

      BadResultForeground = DefaultBadResultForeground;
      BadResultBackground = DefaultBadResultBackground;
    }
    #endregion

  }
}
